package com.atguigu.mybatis.mapper;

import com.atguigu.mybatis.pojo.User;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * Date:2021/11/27
 * Author:ybc
 * Description:
 */
public interface SelectMapper {

    /**
     * 根据id查询用户信息
     */
    //User getUserById(@Param("id") Integer id);  //1.1、单结果，用对象（实体类）接收，resultType="User"
    //List<User> getUserById(@Param("id") Integer id);  //1.2、单结果，用List接收，resultType="User"
    @MapKey("id")
    Map<String, Object> getUserById(@Param("id") Integer id);  //1.5、单结果，用Map接收，resultType="User"

    /**
     * 查询所有的用户信息
     */
    //List<User> getAllUser();  //1、多结果，用对象的List接收，resultType="User"
    @MapKey("id")
    Map<String, Object> getAllUser();  //4、多结果，用Map接收，resultType="User"

    /**
     * 查询用户信息的总记录数
     */
    Integer getCount();

    /**
     * 根据id查询用户信息为一个map集合
     */
    Map<String, Object> getUserByIdToMap(@Param("id") Integer id);  //1.3、单结果，用Map接收，但resultType="map"
    //List<Map<String, Object>> getUserByIdToMap(@Param("id") Integer id);  //1.4、单结果，用List接收，但resultType="map"

    /**
     * 查询所有用户信息为map集合
     */
    //List<Map<String, Object>> getAllUserToMap();  //2、多结果，用Map的List接收，resultType="map"
    @MapKey("id")
    Map<String, Object> getAllUserToMap();  //3、多结果，用Map接收，但要用注解@MapKey("id")指定Map的键，resultType="map"

}
